/**
 * <h3>SchoolServiceImpl</h3>
 * <p> 学校服务实现类 </p>
 *
 * <h3>功能描述</h3>
 * <p> 实现了 {@link ISchoolService} 接口中定义的学校信息增删改查业务逻辑 </p>
 * <p> 通过调用 {@link SchoolMapper} 完成对数据库的操作，支持条件查询、按ID查询、更新、新增和删除等操作 </p>
 *
 * <h3>元数据</h3>
 * <ul>
 *    <li> 作者：郭强</li>
 *    <li> 创建日期：2025年05月06日 21:20:00</li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *    <li> 参考链接：<a href="https://example.com">官方网页</a></li>
 *    <li> 示例代码：{@code new SchoolServiceImpl()} </li>
 * </ul>
 *
 * @apiNote 该类基于 MyBatis Plus 的 ServiceImpl 实现，需确保 SchoolMapper 正确注入
 * @implSpec 继承自 {@link ServiceImpl<SchoolMapper, School>} 并实现 {@link ISchoolService} 接口
 * @since 1.0.0
 */

package com.dnndo.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dnndo.system.domain.School;
import com.dnndo.system.domain.dto.SchoolDTO;
import com.dnndo.system.mapper.SchoolMapper;
import com.dnndo.system.service.ISchoolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 学校服务实现类
 */
@Service
public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, SchoolDTO> implements ISchoolService {

    private final SchoolMapper schoolMapper;

    @Autowired
    public SchoolServiceImpl(SchoolMapper schoolMapper) {
        this.schoolMapper = schoolMapper;
    }

    /**
     * 查询符合条件的学校信息列表
     *
     * @param dto 封装查询条件的 School 对象，包含学校名称、类型、省份等过滤字段
     * @return List<SchoolDTO> 匹配条件的学校信息列表
     * @see com.dnndo.system.mapper.SchoolMapper#selectSchoolList(SchoolDTO)
     */
    @Override
    public List<School> selectSchoolList(SchoolDTO dto) {
        return schoolMapper.selectSchoolList(dto);
    }

    /**
     * 根据学校唯一标识查询学校详细信息
     *
     * @param schoolId 学校ID，用于定位数据库中的唯一记录
     * @return School 学校实体对象，若未找到则返回 null
     * @see com.dnndo.system.mapper.SchoolMapper#selectSchoolListById(Long)
     */
    @Override
    public SchoolDTO selectSchoolListById(Long schoolId) {
        return schoolMapper.selectSchoolListById(schoolId);
    }

    /**
     * 更新指定ID的学校信息
     *
     * @param schoolDTO 封装更新数据的 School 对象，必须包含有效的 schoolId 字段
     * @return int 受影响的记录数，通常为 1 表示更新成功
     * @see com.dnndo.system.mapper.SchoolMapper#updateSchoolById(SchoolDTO)
     */
    @Override
    public int updateSchoolById(SchoolDTO schoolDTO) {
        return schoolMapper.updateSchoolById(schoolDTO);
    }

    /**
     * 新增一条学校记录到数据库
     *
     * @param schoolDTO 封装新增数据的 School 对象，需确保字段完整性
     * @return int 受影响的记录数，通常为 1 表示插入成功
     * @see com.dnndo.system.mapper.SchoolMapper#insertSchool(SchoolDTO)
     */
    @Override
    public int insertSchool(SchoolDTO schoolDTO) {
        return schoolMapper.insertSchool(schoolDTO);
    }

    /**
     * 根据学校ID删除对应的记录
     *
     * @param schoolId 学校唯一标识符
     * @return int 受影响的记录数，通常为 1 表示删除成功
     * @see com.dnndo.system.mapper.SchoolMapper#deleteSchoolById(Integer)
     */
    @Override
    public int deleteSchoolById(Integer schoolId) {
        return schoolMapper.deleteSchoolById(schoolId);
    }
}
